import Mock from 'mockjs';

// 1. 商品相关接口模拟数据
const productTemplate = {
  'id|+1': 1001,
  'name': '@ctitle(3, 5)',
  'price|100.00-2000.00': 1,
  'image': '@image("300x300", "#f47920", "#fff", "商品")',
  'sales|0-10000': 1
};

// 2. 用户相关接口模拟数据
const userTemplate = {
  'id': 1,
  'username': 'testuser',
  'nickname': '@cname',
  'avatar': '@image("100x100", "#50B347", "#fff", "头像")',
  'phone': /^1[3-9]\d{9}$/
};

// 3. 分类相关接口模拟数据
const categoryTemplate = {
  'id|+1': 1,
  'name': '@ctitle(2, 4)',
  'icon': '@image("40x40", "#f47920", "#fff", "分类")'
};

// 4. 模拟接口实现
// 商品列表接口
Mock.mock('/api/products', 'get', () => {
  const products = Mock.mock({
    'list|10': [productTemplate]
  });
  return {
    code: 200,
    message: 'success',
    data: products.list
  };
});

// 商品详情接口
Mock.mock(/\/api\/products\/\d+/, 'get', (options) => {
  // 从 URL 中提取商品 ID
  const id = options.url.match(/\d+/)[0];
  return {
    code: 200,
    message: 'success',
    data: {
      id,
      ...Mock.mock(productTemplate),
      description: '@cparagraph(3, 5)',
      details: '@cparagraph(5, 10)'
    }
  };
});

// 分类列表接口
Mock.mock('/api/categories', 'get', () => {
  const categories = Mock.mock({
    'list|12': [categoryTemplate]
  });
  
  // 为了更好地模拟分类数据，可以设置一些固定的分类名称
  const categoryNames = [
    '热门推荐', '手机数码', '电脑办公', '家用电器', 
    '男装女装', '鞋靴箱包', '美妆个护', '食品生鲜',
    '家居家装', '母婴玩具', '运动户外', '图书音像'
  ];
  
  // 将模拟的ID和固定的名称组合
  categories.list.forEach((category, index) => {
    category.id = index + 1;
    category.name = categoryNames[index] || category.name;
  });
  
  return {
    code: 200,
    message: 'success',
    data: categories.list
  };
});

// 用户登录接口
Mock.mock('/api/auth/login', 'post', (options) => {
  // 解析请求体
  const { phone, smsCaptcha } = JSON.parse(options.body);

  // 简单验证（实际开发中可以更复杂）
  if (phone && smsCaptcha) {
    return {
      code: 200,
      message: '登录成功',
      data: {
        token: 'mock-token-' + Date.now(),
        userInfo: Mock.mock(userTemplate)
      }
    };
  } else {
    return {
      code: 400,
      message: '手机号或验证码错误'
    };
  }
});

// 获取短信验证码接口
Mock.mock('/api/auth/sms-captcha', 'post', (options) => {
  const { phone } = JSON.parse(options.body);
  if (phone) {
    return {
      code: 200,
      message: '验证码发送成功',
      data: {
        smsCode: '123456' // 模拟验证码
      }
    };
  } else {
    return {
      code: 400,
      message: '请输入正确的手机号'
    };
  }
});

// 获取当前用户信息接口
Mock.mock('/api/users/current', 'get', () => {
  return {
    code: 200,
    message: 'success',
    data: Mock.mock(userTemplate)
  };
});

export default Mock;
